/* Die Klasse BenutzerSortieren implementiert die Sortierung
 * einer Liste von Benutzeren nach Benutzer
 * kategorie..und sie soll auch
 * liefert eine Liste  von
 * diesen verschiedenen Benutzer Kategorien , 
 * die man fuer die einer Hoerbuch braucht
 * 
 * 
 * Datei: BenutzerSortieren.java       
 * Autor: Gregory Keussi
 * 
 * Datum: 16.11.11                 Version: 0.1 
 */

package suche;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import personenverwaltung.Benutzer;

/**
 * @author Gregory Keussi Datei BenutzerSortierung.java version 0.1
 *         Datum 27.11.2011
 */
public class BenutzerSortieren
{

  private List<Benutzer> mybenutzerList = new ArrayList<Benutzer> ();
  private List<Benutzer> studentList = new ArrayList<Benutzer> ();
  private List<Benutzer> mitarbeiterList = new ArrayList<Benutzer> ();
  private List<Benutzer> administratorList = new ArrayList<Benutzer> ();
  private List<String> myString = new ArrayList<String> ();


  /* Konstructor der BenutzerSortieren */

  public BenutzerSortieren (List<Benutzer> myBenutzerList)
  {
    if (myBenutzerList.size () < 1)
    {
      // TODO: Benutzermeldung: Es sind keine Daten vorhanden
      return;
    }

    for (Benutzer benutzer : myBenutzerList)
    {

      myString.add (superString (benutzer));

      if (benutzer.istAdministrator () == false)
      {
        administratorList.add (benutzer);
      }

      if (benutzer.istStudent () == true)
      {

        studentList.add (benutzer);
      }

      if (benutzer.istMitarbeiter () == true)
      {

        mitarbeiterList.add (benutzer);
      }
    }
  }


  /*
   * Die Methode ermoeglicht die Suche einen Benutzer oder Benutzerin
   * durch eine beutzerid
   */

  public BenutzerSortieren ()
  {
    mybenutzerList = null;
  }


  public List<Benutzer> gibMyBenutzerList ()
  {
    return mybenutzerList;
  }


  public void setMyBenutzerList (List<Benutzer> k)
  {
    this.mybenutzerList = k;
  }


  public Benutzer suchBenutzerNachId (int id)
  {
    Benutzer b = null;
    for (Benutzer benutzer : this.gibMybenutzerList ())
    {
      if (benutzer.gibId () == id)
      {
        b = benutzer;
        break;
      }
    }
    return b;
  }


  /*
   * Die Methode sucht nach Name einen Benutzer der Bibliothek und sie
   * gibt eine Liste von Benutzer ,die entsprechenden Name haben zueruck
   */
  public List<Benutzer> suchBenutzerNachName (String name)
  {
    List<Benutzer> k = new ArrayList<Benutzer> ();
    for (Benutzer benutzer : gibMybenutzerList ())
    {
      if (benutzer.gibNachname ().contains (name))
      {
        k.add (benutzer);
      }
      return k;
    }
    return k;
  }


  /* Die Methode liefert eine Liste von gesamten Nutzern der Bibliothek */

  public List<Benutzer> gibMybenutzerList ()
  {
    return mybenutzerList;
  }


  public List<Benutzer> gibStudentList ()
  {
    return mybenutzerList;
  }


  public List<Benutzer> gibMitarbeiterList ()
  {
    return mybenutzerList;
  }


  public List<Benutzer> gibAdministratoList ()
  {
    return mybenutzerList;
  }


  public void setMybenutzerList (List<Benutzer> mybenutzerList)
  {
    this.mybenutzerList = mybenutzerList;
  }


  /*
   * Die Methode superString liefert die wichtige Informationen ueber
   * eine(n) Benutzer(in) in String . Die rueckgabewerte diese Methode
   * ist ein String
   */

  public String superString (Benutzer benutzer)
  {
    String myStrin = " ";
    /*
     * myStrin += "\n" + benutzer.gibAnrede () + benutzer.gibTitel () +
     * benutzer.gibNachname ();
     */
    myStrin += benutzer.gibVornamen ();
    myStrin += "\n Benuter-Id " + Integer.toString (benutzer.gibId ())
        + "\n";

    return myStrin;
  }


  public List<String> gibMyString ()
  {
    Collections.sort (myString);
    return myString;
  }

}
